package com.easygem.front.service.imp;

import com.easygem.business.service.base.AbstractServiceImpl;
import com.easygem.common.error.SystemCodeEnum;
import com.easygem.common.error.SystemException;
import com.easygem.common.model.front.ClientStatus;
import com.easygem.common.vo.front.ClientStatusVo;
import com.easygem.front.converter.ClientStatusConverter;
import com.easygem.front.mapper.ClientStatusMapper;
import com.easygem.front.service.ClientStatusService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.sql.Timestamp;
import java.util.List;

/**
 * @author 肖智
 * @version 1.0
 * @Description TODO
 * @date 2024/12/30
 */
@Service
public class ClientStatusServiceImpl extends AbstractServiceImpl<ClientStatusMapper, ClientStatus, Integer> implements ClientStatusService {
    @Autowired
    private ClientStatusMapper clientStatusMapper;

    @Override
    public List<ClientStatus> selectClientStatus(String accountName) {
        //获得到登录后的用户信息，通用方式
        return clientStatusMapper.selectClientStatus(accountName);
    }

    /**
     * 添加客户状态
     *
     * @param clientStatusVo 客户状态对象
     */
    @Override
    public void add(ClientStatusVo clientStatusVo) {
        clientStatusVo.setCreateTime(String.valueOf(new Timestamp(System.currentTimeMillis())));
        ClientStatus clientStatus = new ClientStatus();
        //获得到登录后的用户信息，通用方式
        BeanUtils.copyProperties(clientStatusVo, clientStatus);
        clientStatusMapper.insert(clientStatus);
    }

    /**
     * 得到所有客户状态的所有信息
     *
     * @return 客户状态集合列表
     */
    @Override
    public List<ClientStatusVo> getClientStatusAll(String accountName) {
        return ClientStatusConverter.converterToClientStatusVoList(clientStatusMapper.getClientStatusList(accountName));
    }

    /**
     * 查询所有已启用的
     * @return 用于下拉列表框
     */
    @Override
    public List<ClientStatusVo> getClientStatusListByEnable(String accountName) {
        return ClientStatusConverter.converterToClientStatusVoList(clientStatusMapper.selectClientStatus(accountName));
    }

    /**
     * 拿到需要编辑客户状态的信息
     *
     * @param id id
     * @return
     */
    @Override
    public ClientStatusVo edit(Integer id) throws SystemException {
        ClientStatus clientStatus = clientStatusMapper.selectByPrimaryKey(id);
        if(clientStatus==null){
            throw new SystemException(SystemCodeEnum.PARAMETER_ERROR,"编辑的客户状态不存在");
        }
        return ClientStatusConverter.converterToClientStatusVo(clientStatus);
    }

    /**
     * 更新客户状态
     *
     * @param clientStatusVo 客户状态对象
     */
    @Override
    public void update(Integer id,ClientStatusVo clientStatusVo) throws SystemException {
        ClientStatus clientStatus1 = clientStatusMapper.selectByPrimaryKey(id);
        if(clientStatus1==null){
            throw new SystemException(SystemCodeEnum.PARAMETER_ERROR,"编辑的客户状态不存在");
        }
        ClientStatus clientStatus = new ClientStatus();
        BeanUtils.copyProperties(clientStatusVo,clientStatus);
        clientStatus.setClientStatusId(id);
        clientStatusMapper.updateByPrimaryKeySelective(clientStatus);
    }
}
